Este ficheiro foi escrito utilizando R Markdown. Uma maneira simples de formatar códigos R para criação de documentos HTML, PDF, Word e PowerPoint.

Quando clica no botão Knit, é gerado um documento que inclui tanto o conteúdo como a saída de quaisquer partes de código R incorporadas no documento. Pode incorporar um pedaço de código R da seguinte forma:

Para mais detalhes consulte http://rmarkdown.rstudio.com.


1. Introdução.

Por que R em Gestão de Negócios?

🎯 O R é uma das linguagens mais poderosas para análise de dados, estatística e visualização, sendo amplamente utilizado no mundo académico e corporativo. Mas, afinal, por que um gestor de negócios deveria aprender R?

1️⃣ Decisões baseadas em dados (Data-Driven Decision Making).

O mundo dos negócios está cada vez mais orientado por dados. O R permite:

✅ Analisar grandes volumes de dados e identificar padrões.
✅ Criar relatórios automatizados para suportar decisões estratégicas.
✅ Gerar previsões de vendas, procura ou tendências de mercado.

2️⃣ Alternativa ao Excel – Mais poder e flexibilidade

O R permite fazer tudo o que o Excel faz (e muito mais) com maior precisão e eficiência. Embora o Excel seja uma ferramenta essencial, ele tem limitações quando se trata de:

❌ Trabalhar com grandes quantidades de dados.
❌ Criar modelos estatísticos avançados.
❌ Automatizar processos repetitivos.

3️⃣ Visualização de Dados Profissional e Interativa.

✅ O R possui bibliotecas como ggplot2 que criam gráficos sofisticados e personalizados.

✅ Pode gerar dashboards interativos com Shiny, úteis para acompanhamento de KPIs empresariais.

4️⃣ Machine Learning e Inteligência Artificial.

O R é uma excelente ferramenta para aplicar modelos preditivos e inteligência artificial em negócios:

✅ Análise de sentimentos em redes sociais.
✅ Recomendação de produtos baseada no comportamento dos clientes.
✅ Deteção de fraudes em transações financeiras.

5️⃣ Open Source, Gratuito e com uma Comunidade Forte.

Diferente de softwares pagos (como SAS ou SPSS), o R é 100% gratuito e constantemente atualizado pela sua comunidade global. Além disso:
✅ Possui milhares de pacotes prontos para diferentes áreas de negócio.
✅ Tem uma enorme quantidade de recursos de aprendizagem gratuitos.

O R é uma ferramenta poderosa, flexível e gratuita, permitindo que gestores tomem decisões mais informadas e automatizem tarefas complexas.

🚀 e para sua carreira: pode ser um ótimo diferencial no currículo!

 

2. Diferenças entre R e R Studio?

✅ R (a linguagem).
• É a linguagem de programação usada para estatística, análise de dados e machine learning.
• Funciona em linha de comando (terminal) sem interface gráfica.
• Pode ser usado sozinho, mas é menos amigável para iniciantes.

✅ RStudio (o ambiente de desenvolvimento - IDE).
• É uma ferramenta que facilita o uso do R com uma interface organizada.
• Oferece um editor de scripts, visualização de gráficos e gestão de pacotes num só lugar.
• Não substitui o R – precisas do R instalado para que o RStudio funcione.

👋🏻 Como instalar o R e o RStudio.

Pode sempre utilizar o Posit Cloud na nuvem até que a sua conta atinja os limites de processamento ou o número máximo de projetos permitidos na versão gratuita.

Se preferir, também pode instalar estas aplicações no seu computador e assim evitar qualquer limitação da conta. Para isso, basta seguir estes passos, começando pela instalação do R e, em seguida, do RStudio.

Para instalar o R vá ao CRAN - The Comprehensive R Archive Network em https://cran.r-project.org/ e selecione a versão correspondente ao seu sistema operacional.

 
 

Para instalar o R-Studio vá ao site do fornecedor da ferramenta Posit Cloud em https://posit.co/download/rstudio-desktop/ e baixe a versão correspondente ao seu sistema operacional.

 
A partir de agora, utilize sempre o R Studio.

 

3. Aplicação Real

Toda vez que vamos utilizar o R é necessário preparar o ambiente às suas necessidades. Para isso deve informar quais pacotes (recursos) vamos necessitar. O comando abaixo, verifica se tais pacotes já estáo instalados, caso negativo antes de carregá-los ele instala os pacotes e na sequência carrega-os para a memória do computador.

# limpar a memória do computador
rm(list = ls())

# instalador de pacotes que otimiza recursos
if(!require(pacman)) install.packages("pacman")
## Loading required package: pacman
library(pacman)

pacman::p_load(tidyverse,
                 rmarkdown, 
                 knitr, 
                 kableExtra,
                 GGally, 
                 DataExplorer,
                 gplots,
                 SmartEDA
                 )

#mostra quais pacotes estão carregados
p_loaded()
##  [1] "SmartEDA"     "gplots"       "DataExplorer" "GGally"       "kableExtra"  
##  [6] "knitr"        "rmarkdown"    "lubridate"    "forcats"      "stringr"     
## [11] "dplyr"        "purrr"        "readr"        "tidyr"        "tibble"      
## [16] "ggplot2"      "tidyverse"    "pacman"


Nesta demonstração dos recursos e potencialidades do R, vamos utilizar dois ficheiros que estão no CANVAS. Então devemos carregar os ficheiros para o nosso ambiente de trabalho.

## Carregar ficheiro tipo CSV
dados <- read.csv("video games sales.csv", sep = ";", dec = ".", stringsAsFactors = FALSE)
## Verificar a estrutura dos dados
ExpData(dados,type=1) 
Descriptions Value
Sample size (nrow) 1907
No. of variables (ncol) 12
No. of numeric/interger variables 8
No. of factor variables 0
No. of text variables 4
No. of logical variables 0
No. of identifier variables 1
No. of date variables 0
No. of zero variance variables (uniform) 0
%. of variables having complete cases 83.33% (10)
%. of variables having >0% and <50% missing cases 16.67% (2)
%. of variables having >=50% and <90% missing cases 0% (0)
%. of variables having >=90% missing cases 0% (0)
ExpData(dados,type=2) 
Index Variable_Name Variable_Type Sample_n Missing_Count Per_of_Missing No_of_distinct_values
1 Rank integer 1907 0 0.000 1907
2 Game.Title character 1907 0 0.000 1519
3 Platform character 1907 0 0.000 22
4 Year integer 1878 29 0.015 30
5 Genre character 1907 0 0.000 12
6 Publisher character 1905 2 0.001 95
7 N..America numeric 1907 0 0.000 375
8 Europe numeric 1907 0 0.000 273
9 Japan numeric 1907 0 0.000 218
10 Rest.of.World numeric 1907 0 0.000 129
11 Global numeric 1907 0 0.000 479
12 Review numeric 1907 0 0.000 734
str(dados) 
## 'data.frame':    1907 obs. of  12 variables:
##  $ Rank         : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Game.Title   : chr  "Wii Sports" "Super Mario Bros." "Mario Kart Wii" "Wii Sports Resort" ...
##  $ Platform     : chr  "Wii" "NES" "Wii" "Wii" ...
##  $ Year         : int  2006 1985 2008 2009 1989 2006 2006 1984 2009 2005 ...
##  $ Genre        : chr  "Sports" "Platform" "Racing" "Sports" ...
##  $ Publisher    : chr  "Nintendo" "Nintendo" "Nintendo" "Nintendo" ...
##  $ N..America   : num  40.4 29.1 14.5 14.8 23.2 ...
##  $ Europe       : num  28.39 3.58 12.22 10.51 2.26 ...
##  $ Japan        : num  3.77 6.81 3.63 3.18 4.22 6.48 2.93 0.28 4.66 1.93 ...
##  $ Rest.of.World: num  8.54 0.77 3.21 3.01 0.58 2.88 2.84 0.47 2.25 2.73 ...
##  $ Global       : num  81.1 40.2 33.5 31.5 30.3 ...
##  $ Review       : num  76.3 91 82.1 82.7 88 ...

Uma vez que o conjunto de dados esteja adequado, podemos obter uma análise univariada de cada uma das variáveis presentes no ficheiro. Este comando faz isso de forma rápida e para todas as variáveis contidas no ficheiro.

# Guardar em estatisticas os principais parámetros das variáveis
estatisticas <- ExpNumStat(dados, Outlier = TRUE, Nlim=1)

# Apresentar os parámetros
estatisticas
Vname Group TN nNeg nZero nPos NegInf PosInf NA_Value Per_of_Missing sum min max mean median SD CV IQR Skewness Kurtosis LB.25% UB.75% nOutliers
4 Europe All 1907 0 74 1833 0 0 0 0.000 1347.63 0.00 28.39 0.707 0.44 1.149 1.626 0.580 10.352 195.150 -0.640 1.680 153
7 Global All 1907 0 0 1907 0 0 0 0.000 4746.98 0.83 81.12 2.489 1.53 3.563 1.431 1.430 9.264 147.095 -1.035 4.685 179
5 Japan All 1907 0 813 1094 0 0 0 0.000 605.46 0.00 7.20 0.317 0.02 0.725 2.283 0.300 4.226 23.536 -0.450 0.750 264
3 N..America All 1907 0 61 1846 0 0 0 0.000 2400.51 0.00 40.43 1.259 0.81 1.957 1.554 0.865 9.311 135.169 -0.787 2.672 149
1 Rank All 1907 0 0 1907 0 0 0 0.000 1819278.00 1.00 1907.00 954.000 954.00 550.648 0.577 953.000 0.000 -1.200 -952.000 2860.000 0
6 Rest.of.World All 1907 0 61 1846 0 0 0 0.000 393.74 0.00 8.54 0.206 0.13 0.343 1.662 0.160 10.251 196.663 -0.180 0.460 169
8 Review All 1907 0 0 1907 0 0 0 0.000 150727.33 30.50 97.00 79.039 81.00 10.617 0.134 12.230 -1.264 1.917 55.655 104.575 83
2 Year All 1907 0 0 1878 0 0 29 1.521 3763074.00 1983.00 2012.00 2003.767 2005.00 5.895 0.003 8.000 -1.013 0.935 1988.000 2020.000 40
# A tabela dos parámetros ficou grande (observe que são apresentadas 23 colunas 😳)!
# Então podemos criar a tabela com paginação nativa
estatisticas %>%
  kbl(format = "html") %>%
  kable_paper(full_width = FALSE) %>%
  scroll_box(width = "100%", height = "500px")
Vname Group TN nNeg nZero nPos NegInf PosInf NA_Value Per_of_Missing sum min max mean median SD CV IQR Skewness Kurtosis LB.25% UB.75% nOutliers
4 Europe All 1907 0 74 1833 0 0 0 0.000 1347.63 0.00 28.39 0.707 0.44 1.149 1.626 0.580 10.352 195.150 -0.640 1.680 153
7 Global All 1907 0 0 1907 0 0 0 0.000 4746.98 0.83 81.12 2.489 1.53 3.563 1.431 1.430 9.264 147.095 -1.035 4.685 179
5 Japan All 1907 0 813 1094 0 0 0 0.000 605.46 0.00 7.20 0.317 0.02 0.725 2.283 0.300 4.226 23.536 -0.450 0.750 264
3 N..America All 1907 0 61 1846 0 0 0 0.000 2400.51 0.00 40.43 1.259 0.81 1.957 1.554 0.865 9.311 135.169 -0.787 2.672 149
1 Rank All 1907 0 0 1907 0 0 0 0.000 1819278.00 1.00 1907.00 954.000 954.00 550.648 0.577 953.000 0.000 -1.200 -952.000 2860.000 0
6 Rest.of.World All 1907 0 61 1846 0 0 0 0.000 393.74 0.00 8.54 0.206 0.13 0.343 1.662 0.160 10.251 196.663 -0.180 0.460 169
8 Review All 1907 0 0 1907 0 0 0 0.000 150727.33 30.50 97.00 79.039 81.00 10.617 0.134 12.230 -1.264 1.917 55.655 104.575 83
2 Year All 1907 0 0 1878 0 0 29 1.521 3763074.00 1983.00 2012.00 2003.767 2005.00 5.895 0.003 8.000 -1.013 0.935 1988.000 2020.000 40
# Ou podemos escolher (select) alguns dos porametros e não todos como antes...
est_shor <- estatisticas %>%
  dplyr::select(Vname, mean, SD, min, max, median, nOutliers, NA_Value)

# Apresentar os parámetros selecionados
est_shor
Vname mean SD min max median nOutliers NA_Value
4 Europe 0.707 1.149 0.00 28.39 0.44 153 0
7 Global 2.489 3.563 0.83 81.12 1.53 179 0
5 Japan 0.317 0.725 0.00 7.20 0.02 264 0
3 N..America 1.259 1.957 0.00 40.43 0.81 149 0
1 Rank 954.000 550.648 1.00 1907.00 954.00 0 0
6 Rest.of.World 0.206 0.343 0.00 8.54 0.13 169 0
8 Review 79.039 10.617 30.50 97.00 81.00 83 0
2 Year 2003.767 5.895 1983.00 2012.00 2005.00 40 29

As vezes, uma avaliação visual vale mais que 1.000 números!!! 😂

#Análise das variáveis categóricas
plot_bar(dados)
## 2 columns ignored with more than 50 categories.
## Game.Title: 1519 categories
## Publisher: 95 categories

#Análise das variáveis numéricas
plot_histogram(dados)

plot_density(dados)

A análise visual nos mostrou alguns pontos que merecem reflexão:

  1. A variável Publisher apresenta mais de 50 categorias e por isso não foi gerado gráfico. Alguns destes publisher se calhar tem apenas 1 game… Faz sentido classficar os publishers com menos de n games como outros?

  2. A variável plataforma traz por vezes diversos consoles de uma mesma plataforma, por exemplo PS2, PS e PS3. Que tal criarmos uma variável contendo a plataforma em sua versão mais consolidada?

então… vamos a isso!!!

  1. Contar o número de jogos que cada publisher desenvolveu:
# Agrupar a informação de número de jogos por Publisher
publisher_count <- dados %>%
  group_by(Publisher) %>%
  summarise(n_games = n()) %>%
  arrange(desc(n_games))  # Ordenar do maior para o menor

Agrupar em uma nova variável e rodar novamente a análise gráfica das variáveis categóricas:

n_limite <- 60  # Define o mínimo de jogos para não ser classificado como "Outros"; neste caso formando 10 categorias

# Criar uma nova coluna com "Outros" para publishers com poucos jogos
dados <- dados %>%
  mutate(Publisher_Grouped = ifelse(Publisher %in% publisher_count$Publisher[publisher_count$n_games >= n_limite], 
                                    Publisher, 
                                    "Outros"))

# refazer a análise visual das variáveis categóricas
plot_bar(dados)
## 2 columns ignored with more than 50 categories.
## Game.Title: 1519 categories
## Publisher: 95 categories

  1. Agrupar as plataformas no “sistemas mãe”
dados <- dados %>%
  mutate(Platform_Grouped = case_when(
    Platform %in% c("PS", "PS2", "PS3", "PS4", "PS5", "PSP", "PSV") ~ "PlayStation",
    Platform %in% c("X360", "XB", "XOne", "XSX") ~ "Xbox",
    Platform %in% c("Wii", "WiiU") ~ "Nintendo Wii",
    Platform %in% c("DS", "3DS", "GB", "GBA") ~ "Nintendo Handheld",
    Platform %in% c("NES", "SNES", "N64", "GC", "Switch") ~ "Nintendo Console",
    Platform %in% c("GEN", "SAT", "DC", "SCD") ~ "Sega",
    TRUE ~ "Other"  # Para outras plataformas
  ))

# refazer a análise visual das variáveis categóricas
plot_bar(dados)
## 2 columns ignored with more than 50 categories.
## Game.Title: 1519 categories
## Publisher: 95 categories

Uma vez ajustadas as questões observadas anteriormente na análise univariada, podemos partir para a análise bivariada

# inicialmente vamos ver as variáveis categóricas por Plataforma
plot_bar(dados, by = "Platform_Grouped")
## 2 columns ignored with more than 50 categories.
## Game.Title: 1519 categories
## Publisher: 95 categories

# depois para as variáveis numéricas

plot_boxplot(dados, by = "Platform_Grouped")
## Warning: Removed 29 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

plot_boxplot(dados, by = "Genre")
## Warning: Removed 29 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

plot_boxplot(dados, by = "Publisher_Grouped")
## Warning: Removed 29 rows containing non-finite outside the scale range
## (`stat_boxplot()`).

Momento para reflexão: temos todas as respostas /informações que desejamos?

Sempre podemos utilizar o GGPLOT2, uma robusta e potente biblioteca (linguagem) para gerar gráficos!



Imagine que desejamos ver as vendas em uma determinada região por tipo de jogos lançado ao longo dos anos…

ggplot(dados, aes(x= Year, y= Japan, color = Platform_Grouped)) + 
  geom_point() +
    labs(
    title = "Vendas de Videojogos ao Longo dos Anos",
    x = "Ano",
    y = "Vendas no Japão (em milhões €)"
  ) +
  theme_minimal() 
## Warning: Removed 29 rows containing missing values or values outside the scale range
## (`geom_point()`).

se desejarmos ver as vendas mundiais por tipo de plataforma

# Por plataforma agrupada
ggplot(dados , aes(x=Platform_Grouped, y= Global, fill = Platform_Grouped)) + 
  geom_col() +
  theme_grey()

# Por plataforma
ggplot(dados , aes(x=Platform, y= Global, fill = Platform_Grouped)) + 
  geom_col() +
  theme_classic()


Se desejarmos ver a relação das vendas com reviews, separados por tipo de plataforma.

dadosf <- dados %>% filter(Global < 10) %>% filter(Platform_Grouped == "PlayStation" | Platform_Grouped == "Xbox" | Platform_Grouped == "Nintendo Console")

ggplot(dadosf, aes(x=Review, y=Global, color = Platform_Grouped)) +
  geom_point() +
      theme_minimal() +
  labs(
    title = "Relação entre Avaliação e Vendas Globais",
    x = "Avaliação (Review Score)",
    y = "Vendas Globais (em milhões)",
    color = "Plataforma"
  )

# agora com linha de tendência
ggplot(dadosf, aes(x=Review, y=Global, color = Platform_Grouped)) +
  geom_point() +
  geom_smooth(method = "loess", se = TRUE, color = "black", linewidth = .8) +  # Linha de tendência global
    theme_minimal() +
  labs(
    title = "Relação entre Avaliação e Vendas Globais",
    x = "Avaliação (Review Score)",
    y = "Vendas Globais (em milhões)",
    color = "Plataforma"
  )
## `geom_smooth()` using formula = 'y ~ x'

# agora com linha de tendência por Plataforma
ggplot(dadosf, aes(x=Review, y=Global, color = Platform_Grouped)) +
  geom_point() +
  geom_smooth(method = "loess", se = FALSE, linewidth = .8, aes(group = Platform_Grouped)) +  # Linha de tendência global
    theme_minimal() +
  labs(
    title = "Relação entre Avaliação e Vendas Globais",
    x = "Avaliação (Review Score)",
    y = "Vendas Globais (em milhões)",
    color = "Plataforma"
  )
## `geom_smooth()` using formula = 'y ~ x'

Há muito mais por explorar…

4. Potencial Infinito

Por ser uma plataforma aberta o R tem um vasto portfólio de bibliotecas e possibilidades! No mundo da Gestão do Negócios temos ferramentas como:

  1. Regressão Linear / logística para compreender a dinâmica dos fenómenos.
  2. Análise de Sentimentos (NLP) – Para monitorar os reviews de seus clientes, concorrentes ou tendência de mercado.
  3. Machine Learning – para a prever vendas, manutenção de equipamentos, etc.
  4. Shiny e relatórios dinâmicos – Para criar dashboards executivos e gerenciais.
  5. Automação de relatórios com R Markdown (relatórios automáticos para empresas).

 

5. Como avançar no aprendizado

🎯 Há inúmeras soluções sem custos e dirigidas às suas necessidades. Aqui listo algumas, contudo sempre terá na web um universo sem fim de opções.
 

ChatGPT: para dúvidas rápidas ou mesmo códigos complexos. faça um prompt completo.

Coursera e DataCamp: cursos introdutórios grátis.

YouTube: Canais como Curso de Estatística Aplicada no R (https://www.youtube.com/playlist?list=PLOw62cBQ5j9VE9X4cCCfFMjW_hhEAJUhU), StatQuest (https://www.youtube.com/@statquest/search?query=in%20r), ou R Tutorial for Beginers (https://www.youtube.com/watch?v=KlsYCECWEWE).

Manual do R: https://cran.r-project.org/doc/manuals/r-release/R-intro.pdf

Sheet-Cheets: https://rstudio.github.io/cheatsheets/ https://rstudio.github.io/cheatsheets/html/data-transformation.html#summarize-cases




Livros:
“R for Data Science” (Hadley Wickham).